#ifndef _ELF_H
#define _ELF_H

#include "types.h"

// 小段表示 elf magic number
#define ELF_MAGIC 0x464C457FU

// ELF 文件头部结构
struct elfhdr {
    u32 magic;
    u8  elf[12];
    u16 type;
    u16 machine;
    u32 version;
    u32 entry;
    u32 phoff;
    u32 shoff;
    u32 flags;
    u16 ehsize;
    u16 phentsize;
    u16 phnum;
    u16 shentsize;
    u16 shnum;
    u16 shstrndx;
};

// 程序段头部结构
struct proghdr {
    u32 type;
    u32 off;
    u32 vaddr;
    u32 paddr;
    u32 filesz;
    u32 memsz;
    u32 flags;
    u32 align;
};

// ELF 文件类型
#define ELF_PROG_LOAD   1

#endif /* _ELF_H */